perm filename SUBR3.F4[MUS,LCS] blob
sn#166864 filedate 1975-07-06 generic text, type T, neo UTF8
00010 C SUBR3.F4
00100 C THIS SUBR. CHANGES INST. NAME WHEN IT OVERLAPS WITH ITSELF.
00150 C YOU MUST SET UP 3 MORE COPIES OF CLAR AS CLAR2, CLAR3 AND CLAR4.
00200
00500 SUBROUTINE SUBR
00600 COMMON /INS/ INST(27),BG(60)
00700 COMMON P(30),INUM,IPAR,CNT(27),BT,PL(48),IREST,DF,DUR(27)
00800 C INUM=INST# IPAR=PARAM#
00900 C BT=BASIC TIME P1 WHEN SUBROUTINE IS CALLED
01000 C IF IREST IS <0, THAT NOTE WILL BE A REST.
01100 C INST=INST. NAME, BG=INSTS' BEGIN TIMES.
01200 C NOTE #S IN SUBROUTINE: (1-84) C4=37 FS4=43 C5=49 ETC.
01300 C F1=86 F15=100 (NO F16!)
01400
01500 DIMENSION JINST(4)
01600 DATA JINST/'CLAR','CLAR2','CLAR3','CLAR4'/
01700 C SETS UP INST. NAMES
01800
01900 IF(CNT(INUM).NE.1)GO TO 1
02000 C 'A' AND 'L' ARE INITIALIZED ON FIRST NOTE
02100 A=0
02200 L=1
02300
02400 1 IF(A.GT.P(1))L=L+1
02500 C L CHANGES VALUE IF THERE IS A TIME OVERLAP
02600
02700 IF(L.GT.4)L=1
02800 C RESET L IF IT GETS TOO BIG.
02900
03000 A=P(1)+P(2)*DF
03100 C A STORES THE END POINT IN TIME OF CURRENT NOTE.
03200
03300 INST(INUM)=JINST(L)
03400 C THIS SETS THE INST NAME FOR EVERY NOTE.
03500
03600 RETURN
03700 END
03800
03900
04000 C TYPICAL INPUT
04100
04200 C CLAR 0 7;
04300 C P2 .15;
04400 C P3 MOVE/3.5 C2,C3 C6,C7; 3.5 C6,C7 C2,C3;
04500 C P4 500; < BE CAREFUL FOR AMPLITUDE OVERFLOWS!
04600 C P5 F1; P7 F4 SUBL;
04700 C P6 DF 3 ;
04800 C END;